Spine Generator

The Spine Generator is responsible for generating spine nodes. A "spine" defines the center line of a branch or frond, so both branches and fronds are part of the spine generator.

Generation

enumeration Style

Absolute

Generation: Frequency and Steps: Number values are set explicitly.

Relative

Generation: Frequency and Steps: Number values are computed based on the length of the parent node.

percentage First

The lowest point on the parent where nodes can occur.

percentage Last

The highest point on the parent where nodes can occur.

integer / float Frequency

The number of nodes generated.

If Generation: Style is set to relative, this integer becomes a float and the actual number of nodes generated is computed based on the length of the parent.

curve Pruning

Removes branches systematically after generation (post-balance and stepping).

float Size Scalar

Scales not only the size of the nodes themselves, but also the size of their children.

enumeration Degradation Style

Default

If degradation is enabled, the frequency scalar will only affect this generator if it is the topological end of a generator chain (i.e. it has no children).

Always

If degradation is enabled, the frequency scalar will always affect this generator.

Never

If degradation is enabled, the frequency scalar will never affect this generator (useful for something like roots, which often have no children but do not slow down compute).

enumeration Orientation: Alignment

None

Nodes have a random orientation.

Align

The first node in each step is centered vertically on its parent.

Center Align

Each step is re-aligned so the Sweep range is centered vertically on its parent.

If Steps are disabled, the initial generation angle is centered vertically on the parent node instead.

boolean Orientation: Balanced

Nodes can be balanced (equally spaced) radially by enabling this property.

Changing the Generation: Frequency or Generation: Step: Number properties will result in positional shifting in order to maintain equal spacing.

float Orientation: Offset

The computed angle for each node is offset [+/-] between 0 and this amount.

percentage Orientation: Sweep

The arc around the parent node where nodes are eligible.

Balance is applied after the sweep arc is defined.

float Orientation: Roll

Each node is rotated this absolute amount from its computed angle.

boolean Steps: Enabled

When enabled, nodes are grouped into lengthwise "steps" along the parent node. Balance, angle offset, and other properties will be applied per step.

Each step contains approximately (Generation: Frequency ÷ Generation: Step: Number) branches.

integer / float Steps: Number

The number of steps to distribute the computed frequency among.

If Generation: Style is set to relative, this integer becomes a float and the actual number of steps generated is computed based on the length of the parent node.

percentage Steps: Spread

The maximum amount of lengthwise node spacing allowed from the center of each step to its extents.

boolean Steps: Per Step Frequency

The number of nodes per step is equal to the value for generation:frequency, rather than the frequency value being distributed among all the steps.

Forces

boolean Allow Forces

When enabled, all forces that are checked will act on the generator.

View force definitions Forces

Enabled (checkbox)

While all forces in the scene are listed in this group, only enabled forces affect this generator.


Click on the colored square to the right of the force name to edit its properties.

Geometry Types

boolean Frond

When enabled, 2-sided frond geometry is generated along the spine.

Various properties and property groups related to fronds are only made visible if this property is enabled.

boolean Branch

When enabled, fully 3D branches are skinned over the spine.

Various properties and property groups related to branches are only made visible if this property is enabled.

boolean Cap

When enabled, cap geometry is skinned over open ends of branches, either caused by the radius profile or breaking.

Branches must first be enabled.

Random Seeds

integer Random Seeds

Various seed values are used to procedurally generate nodes. Each random number has been separated out into groups of like properties.

Randomize button

Seeds can be incremented with the spinner or chosen at random via the Randomize button. All seeds can be randomized at once with 'Randomize all'.

Segments

float Multiplier

Scales the number of length, radial, and cap segments uniformly..

enumeration Style

Relative

Both length and radial segments are computed based on the length and radius of the node, respectively.

Length relative

Length segments are computed based on the length of the node.

Radial relative

Radial Segments are computed based on the radius of the node.

Absolute

Both length and radial segments are set explicitly.

integer Accuracy

The maximum fidelity of spines.

Changing accuracy may drastically affect the shape of your spines. Set this value to the maximum desired fidelity early to avoid design losses. Higher values result in slower computes.

integer / float Length

The number of segments composing spines.

If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the length of the parent.

percentage Optimization

Segments are added and removed adaptively based on the curvature of the branch. Increasing this value increases the angle that must be met for a length segment to survive the optimization.

integer / float Radial

The number of segments composing the radial cross-section of branches.

If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is computed based on the radius of individual nodes.

integer / float Cap

The number of segments composing the cap geometry of broken or open-ended branches.

If Segments: Style is set to relative, this integer becomes a float and the actual number of segments generated is a function of the radius of individual nodes.

integer Weld

The number of segments composing the fused part of welded branches.

integer Frond shape

The number of segments composing the Frond: Shape: Contour curve.

percentage Frond Optimization

Frond segments are added and removed adaptively based on the curvature of the frond. Increasing this value increases the angle that must be met for a frond length segment to survive the optimization.

Spine

float Length

The length of the spine nodes as distributed along the parent node.

percentage Start Angle

The amount of angle offset from the parent node's growth direction at the point where each node occurs.

Where 0.0 is equal to the parent's direction, 1.0 is an inversion of the parent's direction.

percentage Alignment

An interpolation between a random "up" direction and absolute (world) "up".

percentage Roll

Uniform rotation of each spine. Roll is applied after Spine:Alignment.

float Disturbance

The amount of randomness applied to each angle along the spine length.

By entering Node Mode, individual disturbance seeds are exposed and can be randomized.

float Jink Frequency

The sampling rate of the jink behavior.

Jink:Frequency and Jink:Amount work together to make the jink behavior. Either set to 0 nullifies the effect.

float Jink Amount

The amount to sample the jink behavior.

Jink:Frequency and Jink:Amount work together to make the jink behavior. Either set to 0 nullifies the effect.

percentage Break Chance

The likelihood that any node will "break", resulting in a capped branch at the break spot.

percentage Break Spot

The percentage of the way along any spine where the branch will "break" from break chance.

Bifurcation

float Chance

The likelihood that any node will bifurcate, or "fork" into two spines at the bifurcation spot.

percentage Spot

The percentage of the way along the spine where the branch will "fork" from Bifurcation:Chance.

percentage Angle

The angle between the two forked halves.

float Distance

The length of the bifurcating segment (from the previous ring to the crease between the fork).

As the distance approaches the next segment, it can "consume" that segment and increase in length.

percentage Radius Scale

Amount to decrease the radius of each bifurcation end branch.

The variance on this value varies the radius for each end independent of its shared base branch.

boolean Adjust Frequency

When enabled, bifurcated branches will generate more children than non-bifurcated branches.

boolean Adjust Frond Start

When enabled, fronds geometry will not start until the bifurcation point (fronds will be made on each split after the break).

percentage Web: Angle

The amount to retract the crease in the middle of the web.

percentage Web: Thickness

The width of the crease in the middle of the web.

percentage Web: Spread

Amount to retract the outer edges of the base ring.

enumeration Break: Style

Whether to break the left, right, or both ends if the break spot lies past the bifurcation spot.

Both Bifurcate and Break must be enabled for a node to utilize Break:Style.

percentage Left Break Spot

The amount to offset the break spot up or down if it happens on the left end of the bifurcation.

Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'left'.

percentage Right Break Spot

The amount to offset the break spot up or down if it happens on the right end of the bifurcation.

Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'right'.

boolean Break: Cap Variance

The amount of variation between the cap displacement of each bifurcation end branch.

Both 'Bifurcate' and 'Break' must be enabled for the node, as well as Break:Style set to 'both'.

Frond

float Shape: Width

The width of the frond.

float Shape: Height

The height of the Frond: Shape: Contour curve.

curve Shape: Contour

The frond shape definition. This curve is extruded along the length of the spine.

enumeration Shape: Contour Style

Right Side

The Shape: Contour curve is mirrored (over the curve Y-axis) on each side of the frond.

Full Width

The Shape: Contour curve is interpreted explicitly, allowing non-symmetrical frond shapes.

boolean Shape: Lock Aspect Ratio

When enabled, the frond width will increase and decrease relative to spine length.

enumeration Mapping

Centered Surface

Fronds are mapped based on surface approximation from the center outwards (maintaining the centerline of the textures).

Surface

Fronds are mapped based strictly on surface approximation (mapping may be heavily weighted on one side rather than staying centered).

Planar

Fronds are planar mapped face down without respecting surface approximation (may result in texture stretching).

enumeration Flip

None

No flipping will occur.

Mapping

Random nodes will have flipped texture coordinates.

Shape

Random nodes will have flipped shapes [see Shape: Contour].

Both

Random nodes may have flipped texture coordinates, shapes, or both.

percentage Start

The percentage along the spine where frond geometry begins.

percentage End

The percentage along the spine where frond geometry terminates.

percentage Roll

Uniform rotation of the frond, applied after spine roll and spine alignment.

integer Count

The number of frond "blades". Frond blades are instances of the frond shape rotated along the spine.

percentage Spacing

The radial distance between each frond blade. A value of 1.0 results in equal distance on both sides of the frond.

Requires a frond count greater than 1.

float Normals: Alignment

Normals are rotated from the face normal towards the direction the node is growing. A value of 1.0 results in normals facing completely out.

float Normals: Spread

Normals are fanned towards the sides of the frond. Spreading will increase for each Frond: Shape segment approaching the edge of the frond.

percentage Mesh: Normal Bias

Modulates between the standard frond normals (0.0) and the normals as set in the source mesh (1.0).

enumeration Mesh: Offset Direction

Frond

The Z-depth of mesh fronds are applied based on the shape of the Frond: Shape: Contour.

Spine

The Z-depth of mesh fronds are applied in a planar fashion with the up vector defined by the spine's orientation.

percentage Mesh: Z Scale

Scalar for the Z-depth (height) of mesh fronds.

Frond: Shape: Height value is applied to the deforming surface, not the mesh frond itself.

Branch

float Radius

The radius of the extruded branch skin.

Radius is scaled to the radius profile percentage of the parent node at the point where each branch occurs.

float Clamp Radius

When enabled, the radius can never exceed the radius of its parent at the point where the branch occured.

float Light Seam Reduction

The amount to bend the normals toward the spine direction.

Normal bending increases exponentially near the base of the branch since light seams occur where branches intersect.

integer Flares: Number

The number of flares around the branch.

percentage Flares: Balance

An interpolation between equally-spaced and randomly-positioned flares.

float Flares: Width

The radial spread of each flare.

float Flares: Length

The distance out from the initial branch radius that the flares will extend.

float Flares: Height

The distance the flare extends up the spine of each node.

percentage Cap: Angle

The rotation of the texture coordinates around the center of the cap.

float Cap: Scale

Texture coordinate scale. Larger values zoom in towards the center (clamped at 1.0).

percentage Cap: Border

Insets the cap from the branch proper to simulate bark thickness.

A cap border greater than 0.0 results in an extra ring of cap segments.

float Cap: Offset

Extrudes the cap geometry in the direction of the last length segment.

Requires a Cap: Border value greater than 0.0.

float Cap: Slope

The length to extend one side of the cap, creating a slope.

Rotate the slope with Cap:Angle

boolean Welding: Enabled

When enabled, branches will be pushed out and fused to their parent, creating a seamless union between the two.

percentage Welding: Normal Blending

The percentage to blend between computed branch normals and the normals from the parent branch at the point of welding.

float Welding: Distance

The distance away from the parent branch skin to start the welded branch.

float Welding: Upper Spread

The amount to spread the weld segments towards the end of the parent branch, creating a "web" where the branches meet.

float Welding: Lower Spread

The amount to spread the weld segments towards the start of the parent branch, creating a "web" where the branches meet.

Texture Coordinates

enumeration Layer

Each layer applies only to branch geometry. Branches have two distinct sets of texture coordinates, 'Base' and 'Detail'.

Base

Show the base layer property set.

Detail

Show the detail layer property set.

The detail layer is a superset of the base layer which includes additional Clamp properties. Detail textures must be present in the material to show up on the branch and are masked by the Detail: Diffuse texture's alpha channel.

enumeration Style

Relative

Both U and V tile are computed based on the length and radius of the node.

U relative

U tile is computed based on the radius of the node.

V relative

V tile is computed based on the length of the node.

Absolute

Both U and V tile are set explicitly.

enumeration U Correction

None

Texture mapping is applied as cylinder before skin disturbance (i.e. displacement, welding, flares).

Early

Texture mapping is applied as cylinder and adjusted before skin disturbance (i.e. displacement, welding, flares).

Late

Texture mapping is applied as cylinder after skin disturbance (i.e. displacement, welding, flares).

integer / float U Tile

The number of times the material tiles around a branch.

If Texture Coordinates: Style is set to relative, this integer becomes a float and the actual value is a function of the radius of individual nodes. The computed U tile value is then rounded to an integer to avoid texture seams.

float V Tile

The number of times the material tiles along the length of a branch.

If Texture Coordinates: Style is set to relative, this integer becomes a float and the actual value is a function of the length of individual nodes.

percentage U Offset

Maximum possible U offset. Each node receives a random value between 0 and this.

Setting the value to 1.0 ensures totally random U offsets.

percentage V Offset

Maximum possible V offset. Each node receives a random value between 0 and this.

Setting the value to 1.0 ensures totally random V offsets.

percentage Twist

The number of full revolutions to twist the material per V tile.

boolean Flip Twist

False

Each branch twists in a counter-clockwise direction.

True

Each branch twists the same amount in either a clockwise or counter-clockwise direction.

enumeration Clamp: Style

"Clamping" a detail texture prohibits it from tiling. Use this to make a non-repeating mark that appears on a specific part of a branch.

Both › Clamp texture from all four sides.

U › Clamp texture from Left to Right.

V › Clamp texture from Bottom to Top.

Neither › Do not clamp this texture.

only available when editing Layer: Detail. Clamping streaks the last row of pixels in the clamped direction. Ensure that the detail mask is transparent at the point where the clamping occurs to avoid visible streaking.

percentage Clamp: Left

Initial U clamp percentage.

percentage Clamp: Right

Terminal U clamp percentage.

percentage Clamp: Bottom

Initial V clamp percentage.

percentage Clamp: Top

Terminal V clamp percentage.

Materials

Material/Weight

Branches, caps and fronds can each have multiple materials to be distributed randomly. Use the button controls to add [+] or remove [-] materials per geometry type.

Material

Named material from the material bank.

Weight

Probability that a node will receive this material index (this weight ÷ sum of all weights).

Using multiple branch maps will require additional draw calls in real-time use. Use sparingly for tiling (branch) textures.

Displacement

enumeration Source

Noise

A generic, scalable noise pattern is used for displacement.

Use material

The material's height map (located in the normal map's alpha channel) is used for displacement.

Named Displacement Texture

A named 'displacement map' from the Asset bar is used for displacement.

The displacement source is not exported for real-time use; it is used only as a modeling aid.

enumeration Mapping*

Use base tex coords

Displacement is mapped on top of the existing Layer: Base coordinates. Tile and offset are applied after obtaining the base coordinates.

Overwrite base tex coords

Ignore the existing coordinates and map displacement explicitly by the other values in this group.

* Only available for branches since caps and fronds have fixed coordinates.

float Amount

The amount of surface displacement caused by displacement.

float Jaggedness

The amount to offset the vertices of each branch ring. Jaggedness is necessary for creating realistic breaks when physics are enabled.

percentage Jaggedness Tile

Scales the tiling of the displacement source for the jaggedness only. Adjusting this value may be necessary if the displacement map does not have sufficient resolution to offset individual vertices.

float Offset

The amount to offset the depth of the displacment source. Values greater than one will push the displacment outwards and less than one will bring the displacement in towards the center of the branch.

integer U Tile

The number of times displacement is repeated across the U direction of the geometry.

If Displacement: Mapping is set to 'Use base tex coords', this value is a multiplier of the base U tile value.

float V Tile

The number of times displacement is repeated along the length of the geometry.

If Displacement: Mapping is set to 'Use base tex coords', this value is a multiplier of the base V tile value.

float U Offset

Maximum possible U offset. Each node receives a random value between 0 and this.

Setting the value to 1.0 ensures totally random U offsets.

boolean V Offset

Maximum possible V offset. Each node receives a random value between 0 and this.

Setting the value to 1.0 ensures totally random V offsets.

float UV Tile*

The number of times displacement is tiled from the center of a cap.

* Replaces separate U and V tile properties for cap geometry.

percentage Angle*

Rotation offset for displacement texture.

* Applied only to cap geometry.

Ambient Occlusion

percentage Offset

An offset for the calculated amount of ambient occlusion. Increasing this value lessens the affect of ambient occlusion.

percentage Contrast

The difference in brightness from the heaviest ambient occlusion to no ambient occlusion.

percentage Min

This value clamps the least amount of ambient occlusion allowed.

percentage Max

This value clamps the most that ambient occlusion can ever darken.

Level of Detail

percentage Optimization

The target optimization amount for the lowest LOD state.

percentage Segment Multiplier

The percentage of overall segments to keep from highest LOD to lowest LOD.

percentage Length Segments

The percentage of length segments to keep from highest LOD to lowest LOD.

percentage Radial Segments

The percentage of radial segments to keep from highest LOD to lowest LOD.

percentage Cap Rings

The percentage of cap ring segments to keep from highest LOD to lowest LOD.

percentage Frond Shape Segments

The percentage of frond shape segments to keep from highest LOD to lowest LOD.

percentage Frond Count

The number of fronds per spine node to keep from highest LOD to lowest LOD.

Requires a frond count greater than 1.

float Branch Volume Threshold

The maximum branch volume allowed from highest LOD to lowest LOD.

float Cap Threshold

The maximum cap area allowed from highest LOD to lowest LOD.

float Frond Area Threshold

The maximum frond area allowed from highest LOD to lowest LOD.

float Bones

The percentage of bones to keep from highest LOD to lowest LOD.

Wind

boolean Apply

Apply secondary wind at this level.

Applying wind at multiple levels may cause branch disconnection.

float Weight

Each vertex of each branch oscillates along a vector shared by all vertices of the same branch. The Weight is length of that vector. Use the profile curve to distribute movement along the branch.

The left hand side of the profile curve must be zero to avoid branch disconnections.

radians Offset

This value provides an offset into the trigonometric functions used during wind oscillation. These values seldom change but can be modified to prevent neighboring branches from oscillating in unison if necessary (this is usually done in node editing mode).

percentage Rotation

Controls the direction of the vector along which this branch travels during wind oscillation. These values seldom change but can be modified to prevent neighboring branches from oscillating in the same direction (this is usually done in node editing mode).

float Frond: Ripple U

Tiles the frond rippling effect across a fronds.

float Frond: Ripple V

Tiles the frond rippling effect along the fronds.

percentage Frond: Ripple Scale

Controls how much this frond adheres to the frond rippling distance values associated with the fan.

Physics

enumeration Bone Style

Relative

The number of bones is based on the length of the spine.

Absolute

The number of bones is explicitly set per-node.

integer / float Bones

The number of bones generated along the length of spines (analogous to Segments: Length)

If Bone Style is set to relative, this integer becomes a float and the actual number of bones generated is a function of the length of individual nodes.

float Density

The weight and stiffness of branch geometry in physics calculations.

percentage Radius Scalar

The percentage to scale the radius of the bones.

percentage Length Scalar

The percentage to scale the length of the bones.

percentage Breakable Chance

The probability of breaking due to physical interaction for the all nodes created from this generator.

enumeration Cap Override

None

No custom cap is used for physics-broken branches.

Indexed Material

Select any material from the Asset Editor for use as the cap texture when a branch is broken while physics is enabled.

boolean Use Frond Geometry

When enabled, frond geometry is made physical as well.

boolean Watertight Branch Geometry

When enabled, branch geometry will be encased as a convex mesh.